package com.srx.openfeign.utils;

import org.apache.commons.mail.*;
import org.apache.commons.validator.routines.EmailValidator;

/**
 * 邮件工具类
 * <p>封装了发送简单文本邮件、带附件的邮件以及带备用文本的HTML邮件的功能。依赖 Apache Commons Mail 库实现邮件发送功能。</p>
 * @author 沈汝旭
 * @since 2025-11-10 14:14:33
 * @version 1.0
 */
public class EmailUtil
{

    /**
     * SMTP密钥
     */
    public static final String SMTP = "kataamhhrhagdhdh";



    /**
     * 验证邮箱地址的合法性
     * @param email 待验证的邮箱地址
     * @return 如果邮箱合法返回true，否则返回false
     */
    public static boolean isValidEmail(String email)
    {
        return EmailValidator.getInstance().isValid(email);
    }


    /**
     * 发送内容为简单文本的邮件
     * @param hostName SMTP服务器地址
     * @param port SMTP服务器端口
     * @param username 登录SMTP服务器的用户名
     * @param password 登录SMTP服务器的密码
     * @param fromEmail 发件人邮箱地址
     * @param toEmail 收件人邮箱地址
     * @param subject 邮件主题
     * @param text 邮件正文内容
     * @return 如果发送成功返回true，否则返回false
     */
    public static boolean sendSimpleTextEmail(String hostName, int port, String username, String password, String fromEmail, String toEmail, String subject, String text)
    {
        try {
            // 创建SimpleEmail对象
            Email email = new SimpleEmail();
            // 设置SMTP服务器信息
            email.setHostName(hostName);
            email.setSmtpPort(port);
            email.setSSLOnConnect(true);
            // 设置登录SMTP服务器的用户名和密码
            email.setAuthentication(username, password);
            // 设置发件人邮箱
            email.setFrom(fromEmail);
            // 设置收件人邮箱
            email.addTo(toEmail);
            // 设置邮件主题
            email.setSubject(subject);
            // 设置邮件内容
            email.setMsg(text);
            // 发送邮件
            email.send();
            return true;
        } catch (EmailException e) {
            return false;
        }
    }

}
